package com.situ.crm2026.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.situ.crm2026.model.Course;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

@Mapper
public interface CourseMapper extends BaseMapper<Course> {
    // 分页查询课程列表（带预约人数）
    Page<Course> findCoursesWithBookedCount(Page<Course> page, @Param("csb") com.situ.crm2026.model.Course csb);

    // 根据课程ID查询课程详情
    Course selectCourseWithMembersById(@Param("id") Integer id);

    // 根据课程ID查询预约该课程的会员信息
    @MapKey("id")
    List<Map<String, Object>> findMembersByCourseId(@Param("courseId") Integer courseId);

    // 根据课程ID查询课程开始时间 该方法已经利用mybatis的selectById获取
   // LocalDateTime selectStartTimeByCourseId(@Param("courseId") Integer courseId);

    // 查询已经预约的还没取消的课程的时间，看要预约的课程开课时间是否落在这个时间段
    List<Course> selectMemberReservedTimeWithTime(@Param("memberId") Integer memberId);
}
